import { axiosInstance } from '@/http/axiosHelper'
import type { ApiResult } from '@/types/apiTypes'

// 添加保健信息请求DTO
export interface AddHealthCareInfoCommand {
    feedingDays: string // 饲养天数（不为空）
    healthCareMethod: string // 保健方式（不为空）
    healthCareApproach: string // 保健方法（不为空）
    productionBatch: string // 批次（关联溯源基本信息表的生产批次）
}

// 更新保健信息请求DTO
export interface UpdateHealthCareInfoCommand {
    healthCareId: string // 保健编号（用于标识要修改的记录）
    feedingDays: string // 饲养天数（不为空）
    healthCareMethod: string // 保健方式（不为空）
    healthCareApproach: string // 保健方法（不为空）
    productionBatch: string // 批次（关联溯源基本信息表的生产批次）
}

// 保健信息响应DTO
export interface HealthCareInfoDto {
    healthCareId: string
    feedingDays: string
    healthCareMethod: string
    healthCareApproach: string
    productionBatch: string
    createdTime?: string
    lastModified?: string
}

export const healthCareService = {
    /**
     * 添加保健信息
     * @param data 保健信息数据
     * @returns 添加结果
     */
    async addHealthCareInfo(data: AddHealthCareInfoCommand): Promise<ApiResult<string>> {
        try {
            const response = await axiosInstance.post('/api/HealthCare/AddHealthCareInfo', data)
            return response.data
        } catch (error) {
            console.error('添加保健信息失败:', error)
            throw error
        }
    },

    /**
     * 根据生产批次查询保健信息
     * @param productionBatch 生产批次
     * @returns 保健信息列表
     */
    async getHealthCareInfoByBatch(productionBatch: string): Promise<ApiResult<HealthCareInfoDto[]>> {
        try {
            const response = await axiosInstance.get('/api/HealthCare/GetHealthCareInfoByBatch', {
                params: { productionBatch }
            })
            return response.data
        } catch (error) {
            console.error('查询保健信息失败:', error)
            throw error
        }
    },

    /**
     * 修改保健信息
     * @param data 保健信息数据
     * @returns 修改结果
     */
    async updateHealthCareInfo(data: UpdateHealthCareInfoCommand): Promise<ApiResult<string>> {
        try {
            const response = await axiosInstance.put('/api/HealthCare/UpdateHealthCareInfo', data)
            return response.data
        } catch (error) {
            console.error('修改保健信息失败:', error)
            throw error
        }
    },

    /**
     * 删除保健信息
     * @param healthCareId 保健编号
     * @returns 删除结果
     */
    async deleteHealthCareInfo(healthCareId: string): Promise<ApiResult<string>> {
        try {
            const response = await axiosInstance.delete('/api/HealthCare/DeleteHealthCareInfo', {
                params: { healthCareId }
            })
            return response.data
        } catch (error) {
            console.error('删除保健信息失败:', error)
            throw error
        }
    }
} 